package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.entity.Collect;
import com.entity.Product;
import com.entity.ProductCategory;
import com.utils.Pager;

/**
 * 商品分类接口
 * @author 
 *
 */
public interface ProductCategoryDao {
	/**
	 * 根据分类查询所有分类(商品分类表)
	 * @param type
	 * @return
	 */
	public List<ProductCategory> selectProductCategory(int type);
	
	/**
	 * 查询所有商品(商品表)
	 * @return
	 */
	public List<Product> seleteProductAll();
	
	/**
	 * 根据id查找对应的商品信息(商品表)
	 * @param id
	 * @return
	 */
	public Product btnProduct(int id);
	
	/**
	 * 根据商品id查找商品是否存在(商品表)
	 * @param id
	 * @return
	 */
	public int productCount(int id);
	
	/**
	 * 查询分类的type字段值(商品分类表)
	 * @param id
	 * @return
	 */
	public int categoryType(int id);
	
	/**
	 * 分页显示查询(商品表)
	 * @param categoryid 分类的id
	 * @param type	分类
	 * @return
	 */
	public List<Product> pageProduct(@Param("type")int type ,@Param("categoryid")int categoryid,@Param("pager")Pager page);
	
	/**
	 * 查询商品总数(商品表)
	 * @param categoryid	分类的编号
	 * @return
	 */
	public int pageCount(@Param("type")int type ,@Param("categoryid")int categoryid);
	
	/**
	 * 模糊查询商品总数(商品表)
	 * @param name
	 * @return
	 */
	public int likeCount(@Param("name")String name);
	
	/**
	 * 模糊 分页查询
	 * @param name
	 * @return
	 */
	public List<Product> likeProduct(@Param("name")String name ,@Param("page")Pager page);
	
	/**
	 * 用 用户收藏夹的商品id(批量查询)去查找商品表的商品信息(商品表)
	 * @param arr
	 * @return
	 */
	public List<Product> CollectProduct(@Param("arr")List<Collect> arr);
	
	/**
	 * 修改商品库存(商品表)
	 * @param proid 商品的id
	 * @param stock 购买的商品数量
	 * @return
	 */
	public int updatePro(@Param("stock")int stock ,@Param("proid")int proid);
	
	/**
	 * 查询商品总记录数(商品表)
	 * @return
	 */
	public int proCount();
	
	/**
	 * 查询商分类的总记录数(商品分类表)
	 * @return
	 */
	public int categoryCount();
	
	/**
	 * 分页查询分类商品信息(商品分类表)
	 * @param page
	 * @return 分类过后的商品
	 */
	public List<ProductCategory> ProductCategoryAll(@Param("page")Pager page);
	
	/**
	 * 根据 分类type 和 categoryLevel* 查询（删除）商品分类的总个数(商品表)
	 * @param id
	 * @return
	 */
	public int parentId(@Param("type")String type,@Param("id")int id);
	
	/**
	 * 根据（删除）的商品分类父ID编号，去查询一遍外键表中是否有数据！(商品分类表)
	 * @param parentId
	 * @return
	 */
	public int parentById(int parentId);


	/**
	 * 根据Id删除商品信息！(商品分类表)
	 * @param id
	 * @return
	 */
	public int delEasybuyProductCategoryById(int id);
	
	/**
	 * 一级 (商品分类表)
	 * @return
	 */
	public List<ProductCategory> ProductCategoryListOne();
	
	/**
	 * 二级 (商品分类表)
	 * @return
	 */
	public List<ProductCategory> ProductCategoryListTwo();
	
	/**
	 * 三级 (商品分类表)
	 * @return
	 */
	public List<ProductCategory> ProductCategoryListThree();
	
	/**
	 * 根据id删除商品 (商品分类表)
	 * @param id
	 * @return
	 */
	public int delProductById(int id);
	
	/**
	 * 修改商品信息 (商品表)
	 * @param easybuyProduct
	 * @return
	 */
	public int updateProduct(@Param("eas")Product easybuyProduct);
	/**
	 * 新增商品信息 (商品表)
	 * @param
	 * @return
	 */
	public int addProduct(@Param("eas")Product easybuyProduct);
	
	/**
	 * 根据父类查询商品 (商品分类表)
	 * @param typeId 类型
	 * @param parentId 父id
	 * @return
	 */
	public List<ProductCategory> getProductCategoryListByparentId(@Param("typeId")int typeId,@Param("parentId")int parentId);
}
